

# 13.2 编写中断例程

# 问题一

# 编写、安装 中断 7ch 的中断例程
# 功能： 求 word 型数据的平方
# 参数：（ax）= 要计算的数据
# 返回值： dx、ax 中存放结果的高16位和低16位
# 比如 ： 求 2*3456^2

assume cs:code
code segment

start:	mov ax,3456    # (ax) = 3456
		int 7ch			# 调用中断 7ch 的中断例程，计算 ax 中的数据的平方
		add ax,ax
		adc dx,dx 			# dx、ax 存放结果，将结果乘以 2
		mov ax,4c00h
		int 21h
code ends
end start


# 安装程序

assume cs:code

code segment
start:	mov ax,cs
		mov ds,ax
		mov si,offset sqr
		mov ax,0
		mov es,ax
		mov di,200h
		mov cx,offset sqrend-offset sqr
		cld
		rep movsb

		mov ax,0
		mov es,ax
		mov word ptr es:[7ch*4],200h
		mov word ptr es:[7ch*4+2],0

		mov ax,4c00h
		int 21h
sqr:	mul ax
		iret

sqrend:	nop

code ends
end start